//和用户相关的状态管理
import {createSlice} from '@reduxjs/toolkit'
import {removeToken} from '@/utils'
import { setToken as _setToken,getToken } from '@/utils'
import { loginAPI,getProfileAPI } from '@/apis/user'
const userStore= createSlice({
    name:"user",
    //数据状态
    initialState:{
        token:getToken()||'',
        userInfo:{}
    },
    //同步修改方法
    reducers:{
        setToken(state,action){
            state.token=action.payload
            //localstorage存一份
            _setToken(action.payload)
            console.log(action);
        },
        setUserinfo(state,action){
          state.userInfo=action.payload
        },
        clearUserInfo(state){
          state.token=''
          state.userInfo={}
          removeToken()
        }
    }
  })

  //结构出actionCreacter
  const {setToken,setUserinfo,clearUserInfo}=userStore.actions
  //获取reducer函数
  const userReducer=userStore.reducer
  //异步方法 完成登录获取token
  const fetchLogin=(loginForm)=>{
    return async (dispatch)=>{
        //1.发送异步请求
      const res=await loginAPI(loginForm)
        //2.提交同步action进行token的存入
        console.log(res);
        dispatch(setToken(res.data.token))
    }
  }
//获取个人用户信息异步方法
  const fetchUserinfo=()=>{
    return async (dispatch)=>{
    const res= await getProfileAPI()
    dispatch(setUserinfo(res.data))

    }
  }
  export{setToken,fetchUserinfo,fetchLogin,clearUserInfo}
  export default userReducer